package com.vip.iot.protocol.mqtt;

import org.eclipse.paho.client.mqttv3.MqttException;

import java.io.Closeable;

/**
 * MQTT实例接口，确定实例的基本功能
 *
 * @author wgb
 * @date 2020/6/17 18:23
 */
public interface IMqttInstance extends Closeable {
    /**
     * 初始化MQTT实例，获取与MQTT服务器的连接
     *
     * @param url  连接地址
     * @param username
     * @param password
     * @throws MqttException
     */
    void init(String url, String username, String password);

    /**
     * 发布消息
     *
     * @param topic 主题
     * @param message   消息
     * @param qos   传输等级
     * @throws MqttException
     */
    void publish(String topic, String message, int qos) throws MqttException;

    /**
     * 订阅消息
     *
     * @param topic 主题
     * @param listener  监听器
     * @throws MqttException
     */
    void subscribe(String topic, OnMessageListener listener) throws MqttException;

    /**
     * 取消订阅
     *
     * @param topic 主题
     * @throws MqttException
     */
    void unsubscribe(String topic) throws MqttException;
}
